#include <iostream>

class point {
        int x;
        int y;

public:
        point() {}
        point(int x, int y) {this->x = x, this->y = y;}
        ~point() {}

        void setx(int x) {this->x = x;}
        int getx() {return x;}
        void sety(int y) {this->y = y;}
        int gety() {return y;}

        point &operator=(const point &);
};

point &point::operator=(const point &data)
{
        std::cout << "call " << __func__ << std::endl;

        x = data.x;
        y = data.y;
        return *this;
}

using namespace std;

int main()
{
        point a(3,4);
        point b;

        cout << "(" << a.getx() << "," << a.gety() << ")" << endl;

        b = a;
        cout << "(" << b.getx() << "," << b.gety() << ")" << endl;

        return 0;
}
